package com.onion.codegen.utils;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class FileCreateUtil {

	private FileCreateUtil() {
	}

	public static final FileCreateUtil getInstance() {
		return LazyHolder.lazy;
	}

	private static class LazyHolder {
		private static final FileCreateUtil lazy = new FileCreateUtil();
	}

	public void writeFile(boolean force, String directory, String fileName, String content) {
		try {
			File file = new File(directory, fileName);
			if (!file.exists()) {
				file.getParentFile().mkdirs();
			} else if (!force) {
				return;
			}
			file.createNewFile();
			// 向指定文件中写入文字
			FileWriter fileWriter = new FileWriter(directory + "/" + fileName);
			// 使用缓冲区比不使用缓冲区效果更好，因为每趟磁盘操作都比内存操作要花费更多时间。
			// 通过BufferedWriter和FileWriter的连接，BufferedWriter可以暂存一堆数据，然后到满时再实际写入磁盘
			// 这样就可以减少对磁盘操作的次数。如果想要强制把缓冲区立即写入,只要调用writer.flush();这个方法就可以要求缓冲区马上把内容写下去
			BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
			bufferedWriter.write(content.toString());
			bufferedWriter.close();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

}
